package datosServer;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author mimi
 */
//import java.lang.String;
//import com.sun.xml.internal.bind.v2.runtime.Coordinator;
//import java.util.*;

public class Partida
{
    public static int tamañoTableroX=7;
    public static int tamañoTableroY=10;
    private String fechaInicio;
    //private String fechaActual;
    private String partidaID;
    private boolean ganoPartida;
    private ListaPieza piezaJugador;
    private ListaPieza piezaMaquina;
    private ListaPieza piezaPote;
    private Pieza  tablero[][];

    private CabezaColaPieza cabezaCola;


    //int cabeza;
    //int cola;
    /*gano si ganoPartida = True = 1 */
  //  private boolean partidaGuardada;

    public Partida()
    {
        //inicializarTablero();
        fechaInicio="";
        //fechaActual="";
        partidaID = "";
        ganoPartida = false;
        piezaJugador = new ListaPieza();
        piezaMaquina = new ListaPieza();
        piezaPote = new ListaPieza();
        this.tablero = new Pieza [this.tamañoTableroX][this.tamañoTableroY];
        cabezaCola = new CabezaColaPieza();


    }

    public CabezaColaPieza getCabezaCola() {
        return cabezaCola;
    }

    public void setCabezaCola(CabezaColaPieza cabezaCola) {
        this.cabezaCola = cabezaCola;
    }
    

    public void setPiezaTablero(int i, int j,Pieza pieza)
    {
        this.tablero[i][j]=pieza;
    }

    public ListaPieza getPiezaJugador() {
        return piezaJugador;
    }

    public void setPiezaJugador(ListaPieza piezaJugador) {
        this.piezaJugador = piezaJugador;
    }

    public ListaPieza getPiezaMaquina() {
        return piezaMaquina;
    }

    public void setPiezaMaquina(ListaPieza piezaMaquina) {
        this.piezaMaquina = piezaMaquina;
    }

    public ListaPieza getPiezaPote() {
        return piezaPote;
    }

    public void setPiezaPote(ListaPieza piezaPote) {
        this.piezaPote = piezaPote;
    }





    public Pieza[][] getTablero() {
        return tablero;
    }

    public void setTablero(Pieza[][] tablero) {
        this.tablero = tablero;
    }






    public static int getTamañoTableroX() {
        return tamañoTableroX;
    }

    public static void setTamañoTableroX(int tamañoTableroX) {
        Partida.tamañoTableroX = tamañoTableroX;
    }

    public static int getTamañoTableroY() {
        return tamañoTableroY;
    }

    public static void setTamañoTableroY(int tamañoTableroY) {
        Partida.tamañoTableroY = tamañoTableroY;
    }

    public String getPartidaID() {
        return partidaID;
    }

    public void setPartidaID(String partidaID)
    {
        //RandomID(user);
        this.partidaID = partidaID;
    }

    public String getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(String fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public void agregarFechaPartidaInicial(int dia, int mes , int año)
    {
        this.fechaInicio=dia+"/"+mes+"/"+año;
    }

    public void ImprimirTablero()
    {
        int i,j=0;
        for (i=0;i<this.tamañoTableroX;i++)
        {

            for (j=0;j<this.tamañoTableroY;j++)
            {
                if (tablero[i][j] != null)
                    System.out.println("Tablero en i= "+i+" j= "+j+" valo="+tablero[i][j].getValSuperior()+" "+tablero[i][j].getValInferior());
            }
        }
    }




   public static boolean InsercionPiezaTablero(Pieza pieza,Usuario user)
   {
       //Pieza [][] tab = new Pieza[10][7];
       if (user != null)
       {
           Partida parAux=new Partida();
           parAux = user.getPartida();
           //parAux = ListaUsuario.getInstance().RecorrerListaUsuario(user.getNickname()).getPartida();
           parAux.setPiezaTablero(pieza.getCoordenadaX(), pieza.getCoordenadaY(), pieza);
           return true;
       }
       return false;
   }

 

/*
    public void inicializarTablero()
    {
        int i,j=0;

        for (i=0;i<tamañoTableroX;i++)
        {
            for(j=0;j<tamañoTableroY;j++)
            {
                this.setPiezaTablero(i, j, null);
            }
        }
    }

*/



    /*public void agregarFechaPartidaActual(int dia, int mes , int año)
    {
        this.fechaActual=dia+"/"+mes+"/"+año;
    }*/


//No puedo generar el hashcode para el id
    public int hashCode()
    {
       int hash = 0;
       hash += (partidaID != null ? partidaID.hashCode():0);
       System.out.print("Hash dentro del hashCode.:  "+hash+ "\n");
       return hash;
    }
    //Para partidaID
    public boolean equals(Object obj)
    {
        Partida auxObj;

        if (! (obj instanceof Partida))
            return false;

        auxObj = (Partida) obj;
    
        if (this.partidaID.hashCode() == auxObj.partidaID.hashCode())
            return true;

    return false;
    }


}
